package com.test3;

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Date;

import cn.hutool.extra.qrcode.BufferedImageLuminanceSource;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.Result;
import com.google.zxing.common.HybridBinarizer;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.ArrayUtils;

import com.alibaba.fastjson.JSONObject;
import com.nlf.calendar.Lunar;
import com.nlf.calendar.Solar;

import javax.imageio.ImageIO;

public class Test6 {

	public static void main(String[] args) throws IOException {


		// 替换成您的二维码图片的Base64编码
		String qrCodeBase64 = Base64Utils.convertFileToBase64ByFile("G:/Workspace/test/imgs/宜城市王集镇双泉村.jpg");
//		test1(qrCodeBase64);
//		String qrCodeBase64 = "2251802934711793";

//		System.err.println(qrCodeBase64);

		// 将Base64编码的图片数据解码为字节数组
		byte[] qrCodeImageBytes = Base64.decodeBase64(qrCodeBase64);



		// 将字节数组转换为 BufferedImage
		ByteArrayInputStream inputStream = new ByteArrayInputStream(qrCodeImageBytes);
		BufferedImage qrCodeImage = ImageIO.read(inputStream);

		// 使用 ZXing 解码二维码
		try {
			MultiFormatReader reader = new MultiFormatReader();
			BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(qrCodeImage)));
			Result result = reader.decode(binaryBitmap);

			// 提取解码后的文本
			String decodedText = result.getText();

			// 在解码文本中查找原始ID
			String originalId = extractOriginalId(decodedText);
			System.out.println("微信公众号原始ID: " + originalId);



			// 将字符串编码为字节数组，并使用 UTF-8 字符集
			byte[] bytes = originalId.getBytes(StandardCharsets.UTF_8);

			// 对字节数组进行 Base64 编码
			String base64Encoded = java.util.Base64.getEncoder().encodeToString(bytes);


			System.out.println("Base64 编码结果: " + base64Encoded);
			test1(base64Encoded);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 根据您的二维码数据的格式，编写用于提取原始ID的方法
	private static String extractOriginalId(String decodedText) {
		// 编写逻辑来从 decodedText 中提取原始ID
		// 根据二维码内容的实际格式进行处理
		// 通常原始ID以gh_开头，后跟一串字符
		// 示例：gh_exampleid
		return decodedText;
	}

	public static void test1(String input) {

		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			md.update(input.getBytes());
			byte[] md5Bytes = md.digest();

			// 将字节数组转换为十六进制字符串
			StringBuilder sb = new StringBuilder();
			for (byte b : md5Bytes) {
				sb.append(String.format("%02x", b));
			}

			// 截取结果的前 15 个字符
			String shortHash = sb.toString().substring(0, 15);
			System.out.println("生成的 15 位加密结果: " + sb);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
	}


}
